//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------

function write(v) { WScript.Echo(v + ""); }

function foo() {}

write(undefined << undefined);
write(undefined << null);
write(undefined << true);
write(undefined << false);
write(undefined << Boolean(true));
write(undefined << Boolean(false));
write(undefined << new Boolean(true));
write(undefined << new Boolean(false));
write(undefined << NaN);
write(undefined << +0);
write(undefined << -0);
write(undefined << 0);
write(undefined << 0.0);
write(undefined << -0.0);
write(undefined << +0.0);
write(undefined << 1);
write(undefined << 10);
write(undefined << 10.0);
write(undefined << 10.1);
write(undefined << -1);
write(undefined << -10);
write(undefined << -10.0);
write(undefined << -10.1);
write(undefined << Number.MAX_VALUE);
write(undefined << Number.MIN_VALUE);
write(undefined << Number.NaN);
write(undefined << Number.POSITIVE_INFINITY);
write(undefined << Number.NEGATIVE_INFINITY);
write(undefined << new Number(NaN));
write(undefined << new Number(+0));
write(undefined << new Number(-0));
write(undefined << new Number(0));
write(undefined << new Number(0.0));
write(undefined << new Number(-0.0));
write(undefined << new Number(+0.0));
write(undefined << new Number(1));
write(undefined << new Number(10));
write(undefined << new Number(10.0));
write(undefined << new Number(10.1));
write(undefined << new Number(-1));
write(undefined << new Number(-10));
write(undefined << new Number(-10.0));
write(undefined << new Number(-10.1));
write(undefined << new Number(Number.MAX_VALUE));
write(undefined << new Number(Number.MIN_VALUE));
write(undefined << new Number(Number.NaN));
write(undefined << new Number(Number.POSITIVE_INFINITY));
write(undefined << new Number(Number.NEGATIVE_INFINITY));
write(undefined << '');
write(undefined << 0xa);
write(undefined << 04);
write(undefined << 'hello');
write(undefined << 'hel' + 'lo');
write(undefined << String(''));
write(undefined << String('hello'));
write(undefined << String('h' + 'ello'));
write(undefined << new String(''));
write(undefined << new String('hello'));
write(undefined << new String('he' + 'llo'));
write(undefined << new Object());
write(undefined << new Object());
write(undefined << [1, 2, 3]);
write(undefined << [1 ,2 , 3]);
write(undefined << new Array(3));
write(undefined << Array(3));
write(undefined << new Array(1 ,2 ,3));
write(undefined << Array(1));
write(undefined << foo);
write(null << undefined);
write(null << null);
write(null << true);
write(null << false);
write(null << Boolean(true));
write(null << Boolean(false));
write(null << new Boolean(true));
write(null << new Boolean(false));
write(null << NaN);
write(null << +0);
write(null << -0);
write(null << 0);
write(null << 0.0);
write(null << -0.0);
write(null << +0.0);
write(null << 1);
write(null << 10);
write(null << 10.0);
write(null << 10.1);
write(null << -1);
write(null << -10);
write(null << -10.0);
write(null << -10.1);
write(null << Number.MAX_VALUE);
write(null << Number.MIN_VALUE);
write(null << Number.NaN);
write(null << Number.POSITIVE_INFINITY);
write(null << Number.NEGATIVE_INFINITY);
write(null << new Number(NaN));
write(null << new Number(+0));
write(null << new Number(-0));
write(null << new Number(0));
write(null << new Number(0.0));
write(null << new Number(-0.0));
write(null << new Number(+0.0));
write(null << new Number(1));
write(null << new Number(10));
write(null << new Number(10.0));
write(null << new Number(10.1));
write(null << new Number(-1));
write(null << new Number(-10));
write(null << new Number(-10.0));
write(null << new Number(-10.1));
write(null << new Number(Number.MAX_VALUE));
write(null << new Number(Number.MIN_VALUE));
write(null << new Number(Number.NaN));
write(null << new Number(Number.POSITIVE_INFINITY));
write(null << new Number(Number.NEGATIVE_INFINITY));
write(null << '');
write(null << 0xa);
write(null << 04);
write(null << 'hello');
write(null << 'hel' + 'lo');
write(null << String(''));
write(null << String('hello'));
write(null << String('h' + 'ello'));
write(null << new String(''));
write(null << new String('hello'));
write(null << new String('he' + 'llo'));
write(null << new Object());
write(null << new Object());
write(null << [1, 2, 3]);
write(null << [1 ,2 , 3]);
write(null << new Array(3));
write(null << Array(3));
write(null << new Array(1 ,2 ,3));
write(null << Array(1));
write(null << foo);
write(true << undefined);
write(true << null);
write(true << true);
write(true << false);
write(true << Boolean(true));
write(true << Boolean(false));
write(true << new Boolean(true));
write(true << new Boolean(false));
write(true << NaN);
write(true << +0);
write(true << -0);
write(true << 0);
write(true << 0.0);
write(true << -0.0);
write(true << +0.0);
write(true << 1);
write(true << 10);
write(true << 10.0);
write(true << 10.1);
write(true << -1);
write(true << -10);
write(true << -10.0);
write(true << -10.1);
write(true << Number.MAX_VALUE);
write(true << Number.MIN_VALUE);
write(true << Number.NaN);
write(true << Number.POSITIVE_INFINITY);
write(true << Number.NEGATIVE_INFINITY);
write(true << new Number(NaN));
write(true << new Number(+0));
write(true << new Number(-0));
write(true << new Number(0));
write(true << new Number(0.0));
write(true << new Number(-0.0));
write(true << new Number(+0.0));
write(true << new Number(1));
write(true << new Number(10));
write(true << new Number(10.0));
write(true << new Number(10.1));
write(true << new Number(-1));
write(true << new Number(-10));
write(true << new Number(-10.0));
write(true << new Number(-10.1));
write(true << new Number(Number.MAX_VALUE));
write(true << new Number(Number.MIN_VALUE));
write(true << new Number(Number.NaN));
write(true << new Number(Number.POSITIVE_INFINITY));
write(true << new Number(Number.NEGATIVE_INFINITY));
write(true << '');
write(true << 0xa);
write(true << 04);
write(true << 'hello');
write(true << 'hel' + 'lo');
write(true << String(''));
write(true << String('hello'));
write(true << String('h' + 'ello'));
write(true << new String(''));
write(true << new String('hello'));
write(true << new String('he' + 'llo'));
write(true << new Object());
write(true << new Object());
write(true << [1, 2, 3]);
write(true << [1 ,2 , 3]);
write(true << new Array(3));
write(true << Array(3));
write(true << new Array(1 ,2 ,3));
write(true << Array(1));
write(true << foo);
write(false << undefined);
write(false << null);
write(false << true);
write(false << false);
write(false << Boolean(true));
write(false << Boolean(false));
write(false << new Boolean(true));
write(false << new Boolean(false));
write(false << NaN);
write(false << +0);
write(false << -0);
write(false << 0);
write(false << 0.0);
write(false << -0.0);
write(false << +0.0);
write(false << 1);
write(false << 10);
write(false << 10.0);
write(false << 10.1);
write(false << -1);
write(false << -10);
write(false << -10.0);
write(false << -10.1);
write(false << Number.MAX_VALUE);
write(false << Number.MIN_VALUE);
write(false << Number.NaN);
write(false << Number.POSITIVE_INFINITY);
write(false << Number.NEGATIVE_INFINITY);
write(false << new Number(NaN));
write(false << new Number(+0));
write(false << new Number(-0));
write(false << new Number(0));
write(false << new Number(0.0));
write(false << new Number(-0.0));
write(false << new Number(+0.0));
write(false << new Number(1));
write(false << new Number(10));
write(false << new Number(10.0));
write(false << new Number(10.1));
write(false << new Number(-1));
write(false << new Number(-10));
write(false << new Number(-10.0));
write(false << new Number(-10.1));
write(false << new Number(Number.MAX_VALUE));
write(false << new Number(Number.MIN_VALUE));
write(false << new Number(Number.NaN));
write(false << new Number(Number.POSITIVE_INFINITY));
write(false << new Number(Number.NEGATIVE_INFINITY));
write(false << '');
write(false << 0xa);
write(false << 04);
write(false << 'hello');
write(false << 'hel' + 'lo');
write(false << String(''));
write(false << String('hello'));
write(false << String('h' + 'ello'));
write(false << new String(''));
write(false << new String('hello'));
write(false << new String('he' + 'llo'));
write(false << new Object());
write(false << new Object());
write(false << [1, 2, 3]);
write(false << [1 ,2 , 3]);
write(false << new Array(3));
write(false << Array(3));
write(false << new Array(1 ,2 ,3));
write(false << Array(1));
write(false << foo);
write(Boolean(true) << undefined);
write(Boolean(true) << null);
write(Boolean(true) << true);
write(Boolean(true) << false);
write(Boolean(true) << Boolean(true));
write(Boolean(true) << Boolean(false));
write(Boolean(true) << new Boolean(true));
write(Boolean(true) << new Boolean(false));
write(Boolean(true) << NaN);
write(Boolean(true) << +0);
write(Boolean(true) << -0);
write(Boolean(true) << 0);
write(Boolean(true) << 0.0);
write(Boolean(true) << -0.0);
write(Boolean(true) << +0.0);
write(Boolean(true) << 1);
write(Boolean(true) << 10);
write(Boolean(true) << 10.0);
write(Boolean(true) << 10.1);
write(Boolean(true) << -1);
write(Boolean(true) << -10);
write(Boolean(true) << -10.0);
write(Boolean(true) << -10.1);
write(Boolean(true) << Number.MAX_VALUE);
write(Boolean(true) << Number.MIN_VALUE);
write(Boolean(true) << Number.NaN);
write(Boolean(true) << Number.POSITIVE_INFINITY);
write(Boolean(true) << Number.NEGATIVE_INFINITY);
write(Boolean(true) << new Number(NaN));
write(Boolean(true) << new Number(+0));
write(Boolean(true) << new Number(-0));
write(Boolean(true) << new Number(0));
write(Boolean(true) << new Number(0.0));
write(Boolean(true) << new Number(-0.0));
write(Boolean(true) << new Number(+0.0));
write(Boolean(true) << new Number(1));
write(Boolean(true) << new Number(10));
write(Boolean(true) << new Number(10.0));
write(Boolean(true) << new Number(10.1));
write(Boolean(true) << new Number(-1));
write(Boolean(true) << new Number(-10));
write(Boolean(true) << new Number(-10.0));
write(Boolean(true) << new Number(-10.1));
write(Boolean(true) << new Number(Number.MAX_VALUE));
write(Boolean(true) << new Number(Number.MIN_VALUE));
write(Boolean(true) << new Number(Number.NaN));
write(Boolean(true) << new Number(Number.POSITIVE_INFINITY));
write(Boolean(true) << new Number(Number.NEGATIVE_INFINITY));
write(Boolean(true) << '');
write(Boolean(true) << 0xa);
write(Boolean(true) << 04);
write(Boolean(true) << 'hello');
write(Boolean(true) << 'hel' + 'lo');
write(Boolean(true) << String(''));
write(Boolean(true) << String('hello'));
write(Boolean(true) << String('h' + 'ello'));
write(Boolean(true) << new String(''));
write(Boolean(true) << new String('hello'));
write(Boolean(true) << new String('he' + 'llo'));
write(Boolean(true) << new Object());
write(Boolean(true) << new Object());
write(Boolean(true) << [1, 2, 3]);
write(Boolean(true) << [1 ,2 , 3]);
write(Boolean(true) << new Array(3));
write(Boolean(true) << Array(3));
write(Boolean(true) << new Array(1 ,2 ,3));
write(Boolean(true) << Array(1));
write(Boolean(true) << foo);
write(Boolean(false) << undefined);
write(Boolean(false) << null);
write(Boolean(false) << true);
write(Boolean(false) << false);
write(Boolean(false) << Boolean(true));
write(Boolean(false) << Boolean(false));
write(Boolean(false) << new Boolean(true));
write(Boolean(false) << new Boolean(false));
write(Boolean(false) << NaN);
write(Boolean(false) << +0);
write(Boolean(false) << -0);
write(Boolean(false) << 0);
write(Boolean(false) << 0.0);
write(Boolean(false) << -0.0);
write(Boolean(false) << +0.0);
write(Boolean(false) << 1);
write(Boolean(false) << 10);
write(Boolean(false) << 10.0);
write(Boolean(false) << 10.1);
write(Boolean(false) << -1);
write(Boolean(false) << -10);
write(Boolean(false) << -10.0);
write(Boolean(false) << -10.1);
write(Boolean(false) << Number.MAX_VALUE);
write(Boolean(false) << Number.MIN_VALUE);
write(Boolean(false) << Number.NaN);
write(Boolean(false) << Number.POSITIVE_INFINITY);
write(Boolean(false) << Number.NEGATIVE_INFINITY);
write(Boolean(false) << new Number(NaN));
write(Boolean(false) << new Number(+0));
write(Boolean(false) << new Number(-0));
write(Boolean(false) << new Number(0));
write(Boolean(false) << new Number(0.0));
write(Boolean(false) << new Number(-0.0));
write(Boolean(false) << new Number(+0.0));
write(Boolean(false) << new Number(1));
write(Boolean(false) << new Number(10));
write(Boolean(false) << new Number(10.0));
write(Boolean(false) << new Number(10.1));
write(Boolean(false) << new Number(-1));
write(Boolean(false) << new Number(-10));
write(Boolean(false) << new Number(-10.0));
write(Boolean(false) << new Number(-10.1));
write(Boolean(false) << new Number(Number.MAX_VALUE));
write(Boolean(false) << new Number(Number.MIN_VALUE));
write(Boolean(false) << new Number(Number.NaN));
write(Boolean(false) << new Number(Number.POSITIVE_INFINITY));
write(Boolean(false) << new Number(Number.NEGATIVE_INFINITY));
write(Boolean(false) << '');
write(Boolean(false) << 0xa);
write(Boolean(false) << 04);
write(Boolean(false) << 'hello');
write(Boolean(false) << 'hel' + 'lo');
write(Boolean(false) << String(''));
write(Boolean(false) << String('hello'));
write(Boolean(false) << String('h' + 'ello'));
write(Boolean(false) << new String(''));
write(Boolean(false) << new String('hello'));
write(Boolean(false) << new String('he' + 'llo'));
write(Boolean(false) << new Object());
write(Boolean(false) << new Object());
write(Boolean(false) << [1, 2, 3]);
write(Boolean(false) << [1 ,2 , 3]);
write(Boolean(false) << new Array(3));
write(Boolean(false) << Array(3));
write(Boolean(false) << new Array(1 ,2 ,3));
write(Boolean(false) << Array(1));
write(Boolean(false) << foo);
write(new Boolean(true) << undefined);
write(new Boolean(true) << null);
write(new Boolean(true) << true);
write(new Boolean(true) << false);
write(new Boolean(true) << Boolean(true));
write(new Boolean(true) << Boolean(false));
write(new Boolean(true) << new Boolean(true));
write(new Boolean(true) << new Boolean(false));
write(new Boolean(true) << NaN);
write(new Boolean(true) << +0);
write(new Boolean(true) << -0);
write(new Boolean(true) << 0);
write(new Boolean(true) << 0.0);
write(new Boolean(true) << -0.0);
write(new Boolean(true) << +0.0);
write(new Boolean(true) << 1);
write(new Boolean(true) << 10);
write(new Boolean(true) << 10.0);
write(new Boolean(true) << 10.1);
write(new Boolean(true) << -1);
write(new Boolean(true) << -10);
write(new Boolean(true) << -10.0);
write(new Boolean(true) << -10.1);
write(new Boolean(true) << Number.MAX_VALUE);
write(new Boolean(true) << Number.MIN_VALUE);
write(new Boolean(true) << Number.NaN);
write(new Boolean(true) << Number.POSITIVE_INFINITY);
write(new Boolean(true) << Number.NEGATIVE_INFINITY);
write(new Boolean(true) << new Number(NaN));
write(new Boolean(true) << new Number(+0));
write(new Boolean(true) << new Number(-0));
write(new Boolean(true) << new Number(0));
write(new Boolean(true) << new Number(0.0));
write(new Boolean(true) << new Number(-0.0));
write(new Boolean(true) << new Number(+0.0));
write(new Boolean(true) << new Number(1));
write(new Boolean(true) << new Number(10));
write(new Boolean(true) << new Number(10.0));
write(new Boolean(true) << new Number(10.1));
write(new Boolean(true) << new Number(-1));
write(new Boolean(true) << new Number(-10));
write(new Boolean(true) << new Number(-10.0));
write(new Boolean(true) << new Number(-10.1));
write(new Boolean(true) << new Number(Number.MAX_VALUE));
write(new Boolean(true) << new Number(Number.MIN_VALUE));
write(new Boolean(true) << new Number(Number.NaN));
write(new Boolean(true) << new Number(Number.POSITIVE_INFINITY));
write(new Boolean(true) << new Number(Number.NEGATIVE_INFINITY));
write(new Boolean(true) << '');
write(new Boolean(true) << 0xa);
write(new Boolean(true) << 04);
write(new Boolean(true) << 'hello');
write(new Boolean(true) << 'hel' + 'lo');
write(new Boolean(true) << String(''));
write(new Boolean(true) << String('hello'));
write(new Boolean(true) << String('h' + 'ello'));
write(new Boolean(true) << new String(''));
write(new Boolean(true) << new String('hello'));
write(new Boolean(true) << new String('he' + 'llo'));
write(new Boolean(true) << new Object());
write(new Boolean(true) << new Object());
write(new Boolean(true) << [1, 2, 3]);
write(new Boolean(true) << [1 ,2 , 3]);
write(new Boolean(true) << new Array(3));
write(new Boolean(true) << Array(3));
write(new Boolean(true) << new Array(1 ,2 ,3));
write(new Boolean(true) << Array(1));
write(new Boolean(true) << foo);
write(new Boolean(false) << undefined);
write(new Boolean(false) << null);
write(new Boolean(false) << true);
write(new Boolean(false) << false);
write(new Boolean(false) << Boolean(true));
write(new Boolean(false) << Boolean(false));
write(new Boolean(false) << new Boolean(true));
write(new Boolean(false) << new Boolean(false));
write(new Boolean(false) << NaN);
write(new Boolean(false) << +0);
write(new Boolean(false) << -0);
write(new Boolean(false) << 0);
write(new Boolean(false) << 0.0);
write(new Boolean(false) << -0.0);
write(new Boolean(false) << +0.0);
write(new Boolean(false) << 1);
write(new Boolean(false) << 10);
write(new Boolean(false) << 10.0);
write(new Boolean(false) << 10.1);
write(new Boolean(false) << -1);
write(new Boolean(false) << -10);
write(new Boolean(false) << -10.0);
write(new Boolean(false) << -10.1);
write(new Boolean(false) << Number.MAX_VALUE);
write(new Boolean(false) << Number.MIN_VALUE);
write(new Boolean(false) << Number.NaN);
write(new Boolean(false) << Number.POSITIVE_INFINITY);
write(new Boolean(false) << Number.NEGATIVE_INFINITY);
write(new Boolean(false) << new Number(NaN));
write(new Boolean(false) << new Number(+0));
write(new Boolean(false) << new Number(-0));
write(new Boolean(false) << new Number(0));
write(new Boolean(false) << new Number(0.0));
write(new Boolean(false) << new Number(-0.0));
write(new Boolean(false) << new Number(+0.0));
write(new Boolean(false) << new Number(1));
write(new Boolean(false) << new Number(10));
write(new Boolean(false) << new Number(10.0));
write(new Boolean(false) << new Number(10.1));
write(new Boolean(false) << new Number(-1));
write(new Boolean(false) << new Number(-10));
write(new Boolean(false) << new Number(-10.0));
write(new Boolean(false) << new Number(-10.1));
write(new Boolean(false) << new Number(Number.MAX_VALUE));
write(new Boolean(false) << new Number(Number.MIN_VALUE));
write(new Boolean(false) << new Number(Number.NaN));
write(new Boolean(false) << new Number(Number.POSITIVE_INFINITY));
write(new Boolean(false) << new Number(Number.NEGATIVE_INFINITY));
write(new Boolean(false) << '');
write(new Boolean(false) << 0xa);
write(new Boolean(false) << 04);
write(new Boolean(false) << 'hello');
write(new Boolean(false) << 'hel' + 'lo');
write(new Boolean(false) << String(''));
write(new Boolean(false) << String('hello'));
write(new Boolean(false) << String('h' + 'ello'));
write(new Boolean(false) << new String(''));
write(new Boolean(false) << new String('hello'));
write(new Boolean(false) << new String('he' + 'llo'));
write(new Boolean(false) << new Object());
write(new Boolean(false) << new Object());
write(new Boolean(false) << [1, 2, 3]);
write(new Boolean(false) << [1 ,2 , 3]);
write(new Boolean(false) << new Array(3));
write(new Boolean(false) << Array(3));
write(new Boolean(false) << new Array(1 ,2 ,3));
write(new Boolean(false) << Array(1));
write(new Boolean(false) << foo);
write(NaN << undefined);
write(NaN << null);
write(NaN << true);
write(NaN << false);
write(NaN << Boolean(true));
write(NaN << Boolean(false));
write(NaN << new Boolean(true));
write(NaN << new Boolean(false));
write(NaN << NaN);
write(NaN << +0);
write(NaN << -0);
write(NaN << 0);
write(NaN << 0.0);
write(NaN << -0.0);
write(NaN << +0.0);
write(NaN << 1);
write(NaN << 10);
write(NaN << 10.0);
write(NaN << 10.1);
write(NaN << -1);
write(NaN << -10);
write(NaN << -10.0);
write(NaN << -10.1);
write(NaN << Number.MAX_VALUE);
write(NaN << Number.MIN_VALUE);
write(NaN << Number.NaN);
write(NaN << Number.POSITIVE_INFINITY);
write(NaN << Number.NEGATIVE_INFINITY);
write(NaN << new Number(NaN));
write(NaN << new Number(+0));
write(NaN << new Number(-0));
write(NaN << new Number(0));
write(NaN << new Number(0.0));
write(NaN << new Number(-0.0));
write(NaN << new Number(+0.0));
write(NaN << new Number(1));
write(NaN << new Number(10));
write(NaN << new Number(10.0));
write(NaN << new Number(10.1));
write(NaN << new Number(-1));
write(NaN << new Number(-10));
write(NaN << new Number(-10.0));
write(NaN << new Number(-10.1));
write(NaN << new Number(Number.MAX_VALUE));
write(NaN << new Number(Number.MIN_VALUE));
write(NaN << new Number(Number.NaN));
write(NaN << new Number(Number.POSITIVE_INFINITY));
write(NaN << new Number(Number.NEGATIVE_INFINITY));
write(NaN << '');
write(NaN << 0xa);
write(NaN << 04);
write(NaN << 'hello');
write(NaN << 'hel' + 'lo');
write(NaN << String(''));
write(NaN << String('hello'));
write(NaN << String('h' + 'ello'));
write(NaN << new String(''));
write(NaN << new String('hello'));
write(NaN << new String('he' + 'llo'));
write(NaN << new Object());
write(NaN << new Object());
write(NaN << [1, 2, 3]);
write(NaN << [1 ,2 , 3]);
write(NaN << new Array(3));
write(NaN << Array(3));
write(NaN << new Array(1 ,2 ,3));
write(NaN << Array(1));
write(NaN << foo);
write(+0 << undefined);
write(+0 << null);
write(+0 << true);
write(+0 << false);
write(+0 << Boolean(true));
write(+0 << Boolean(false));
write(+0 << new Boolean(true));
write(+0 << new Boolean(false));
write(+0 << NaN);
write(+0 << +0);
write(+0 << -0);
write(+0 << 0);
write(+0 << 0.0);
write(+0 << -0.0);
write(+0 << +0.0);
write(+0 << 1);
write(+0 << 10);
write(+0 << 10.0);
write(+0 << 10.1);
write(+0 << -1);
write(+0 << -10);
write(+0 << -10.0);
write(+0 << -10.1);
write(+0 << Number.MAX_VALUE);
write(+0 << Number.MIN_VALUE);
write(+0 << Number.NaN);
write(+0 << Number.POSITIVE_INFINITY);
write(+0 << Number.NEGATIVE_INFINITY);
write(+0 << new Number(NaN));
write(+0 << new Number(+0));
write(+0 << new Number(-0));
write(+0 << new Number(0));
write(+0 << new Number(0.0));
write(+0 << new Number(-0.0));
write(+0 << new Number(+0.0));
write(+0 << new Number(1));
write(+0 << new Number(10));
write(+0 << new Number(10.0));
write(+0 << new Number(10.1));
write(+0 << new Number(-1));
write(+0 << new Number(-10));
write(+0 << new Number(-10.0));
write(+0 << new Number(-10.1));
write(+0 << new Number(Number.MAX_VALUE));
write(+0 << new Number(Number.MIN_VALUE));
write(+0 << new Number(Number.NaN));
write(+0 << new Number(Number.POSITIVE_INFINITY));
write(+0 << new Number(Number.NEGATIVE_INFINITY));
write(+0 << '');
write(+0 << 0xa);
write(+0 << 04);
write(+0 << 'hello');
write(+0 << 'hel' + 'lo');
write(+0 << String(''));
write(+0 << String('hello'));
write(+0 << String('h' + 'ello'));
write(+0 << new String(''));
write(+0 << new String('hello'));
write(+0 << new String('he' + 'llo'));
write(+0 << new Object());
write(+0 << new Object());
write(+0 << [1, 2, 3]);
write(+0 << [1 ,2 , 3]);
write(+0 << new Array(3));
write(+0 << Array(3));
write(+0 << new Array(1 ,2 ,3));
write(+0 << Array(1));
write(+0 << foo);
write(-0 << undefined);
write(-0 << null);
write(-0 << true);
write(-0 << false);
write(-0 << Boolean(true));
write(-0 << Boolean(false));
write(-0 << new Boolean(true));
write(-0 << new Boolean(false));
write(-0 << NaN);
write(-0 << +0);
write(-0 << -0);
write(-0 << 0);
write(-0 << 0.0);
write(-0 << -0.0);
write(-0 << +0.0);
write(-0 << 1);
write(-0 << 10);
write(-0 << 10.0);
write(-0 << 10.1);
write(-0 << -1);
write(-0 << -10);
write(-0 << -10.0);
write(-0 << -10.1);
write(-0 << Number.MAX_VALUE);
write(-0 << Number.MIN_VALUE);
write(-0 << Number.NaN);
write(-0 << Number.POSITIVE_INFINITY);
write(-0 << Number.NEGATIVE_INFINITY);
write(-0 << new Number(NaN));
write(-0 << new Number(+0));
write(-0 << new Number(-0));
write(-0 << new Number(0));
write(-0 << new Number(0.0));
write(-0 << new Number(-0.0));
write(-0 << new Number(+0.0));
write(-0 << new Number(1));
write(-0 << new Number(10));
write(-0 << new Number(10.0));
write(-0 << new Number(10.1));
write(-0 << new Number(-1));
write(-0 << new Number(-10));
write(-0 << new Number(-10.0));
write(-0 << new Number(-10.1));
write(-0 << new Number(Number.MAX_VALUE));
write(-0 << new Number(Number.MIN_VALUE));
write(-0 << new Number(Number.NaN));
write(-0 << new Number(Number.POSITIVE_INFINITY));
write(-0 << new Number(Number.NEGATIVE_INFINITY));
write(-0 << '');
write(-0 << 0xa);
write(-0 << 04);
write(-0 << 'hello');
write(-0 << 'hel' + 'lo');
write(-0 << String(''));
write(-0 << String('hello'));
write(-0 << String('h' + 'ello'));
write(-0 << new String(''));
write(-0 << new String('hello'));
write(-0 << new String('he' + 'llo'));
write(-0 << new Object());
write(-0 << new Object());
write(-0 << [1, 2, 3]);
write(-0 << [1 ,2 , 3]);
write(-0 << new Array(3));
write(-0 << Array(3));
write(-0 << new Array(1 ,2 ,3));
write(-0 << Array(1));
write(-0 << foo);
write(0 << undefined);
write(0 << null);
write(0 << true);
write(0 << false);
write(0 << Boolean(true));
write(0 << Boolean(false));
write(0 << new Boolean(true));
write(0 << new Boolean(false));
write(0 << NaN);
write(0 << +0);
write(0 << -0);
write(0 << 0);
write(0 << 0.0);
write(0 << -0.0);
write(0 << +0.0);
write(0 << 1);
write(0 << 10);
write(0 << 10.0);
write(0 << 10.1);
write(0 << -1);
write(0 << -10);
write(0 << -10.0);
write(0 << -10.1);
write(0 << Number.MAX_VALUE);
write(0 << Number.MIN_VALUE);
write(0 << Number.NaN);
write(0 << Number.POSITIVE_INFINITY);
write(0 << Number.NEGATIVE_INFINITY);
write(0 << new Number(NaN));
write(0 << new Number(+0));
write(0 << new Number(-0));
write(0 << new Number(0));
write(0 << new Number(0.0));
write(0 << new Number(-0.0));
write(0 << new Number(+0.0));
write(0 << new Number(1));
write(0 << new Number(10));
write(0 << new Number(10.0));
write(0 << new Number(10.1));
write(0 << new Number(-1));
write(0 << new Number(-10));
write(0 << new Number(-10.0));
write(0 << new Number(-10.1));
write(0 << new Number(Number.MAX_VALUE));
write(0 << new Number(Number.MIN_VALUE));
write(0 << new Number(Number.NaN));
write(0 << new Number(Number.POSITIVE_INFINITY));
write(0 << new Number(Number.NEGATIVE_INFINITY));
write(0 << '');
write(0 << 0xa);
write(0 << 04);
write(0 << 'hello');
write(0 << 'hel' + 'lo');
write(0 << String(''));
write(0 << String('hello'));
write(0 << String('h' + 'ello'));
write(0 << new String(''));
write(0 << new String('hello'));
write(0 << new String('he' + 'llo'));
write(0 << new Object());
write(0 << new Object());
write(0 << [1, 2, 3]);
write(0 << [1 ,2 , 3]);
write(0 << new Array(3));
write(0 << Array(3));
write(0 << new Array(1 ,2 ,3));
write(0 << Array(1));
write(0 << foo);
write(0.0 << undefined);
write(0.0 << null);
write(0.0 << true);
write(0.0 << false);
write(0.0 << Boolean(true));
write(0.0 << Boolean(false));
write(0.0 << new Boolean(true));
write(0.0 << new Boolean(false));
write(0.0 << NaN);
write(0.0 << +0);
write(0.0 << -0);
write(0.0 << 0);
write(0.0 << 0.0);
write(0.0 << -0.0);
write(0.0 << +0.0);
write(0.0 << 1);
write(0.0 << 10);
write(0.0 << 10.0);
write(0.0 << 10.1);
write(0.0 << -1);
write(0.0 << -10);
write(0.0 << -10.0);
write(0.0 << -10.1);
write(0.0 << Number.MAX_VALUE);
write(0.0 << Number.MIN_VALUE);
write(0.0 << Number.NaN);
write(0.0 << Number.POSITIVE_INFINITY);
write(0.0 << Number.NEGATIVE_INFINITY);
write(0.0 << new Number(NaN));
write(0.0 << new Number(+0));
write(0.0 << new Number(-0));
write(0.0 << new Number(0));
write(0.0 << new Number(0.0));
write(0.0 << new Number(-0.0));
write(0.0 << new Number(+0.0));
write(0.0 << new Number(1));
write(0.0 << new Number(10));
write(0.0 << new Number(10.0));
write(0.0 << new Number(10.1));
write(0.0 << new Number(-1));
write(0.0 << new Number(-10));
write(0.0 << new Number(-10.0));
write(0.0 << new Number(-10.1));
write(0.0 << new Number(Number.MAX_VALUE));
write(0.0 << new Number(Number.MIN_VALUE));
write(0.0 << new Number(Number.NaN));
write(0.0 << new Number(Number.POSITIVE_INFINITY));
write(0.0 << new Number(Number.NEGATIVE_INFINITY));
write(0.0 << '');
write(0.0 << 0xa);
write(0.0 << 04);
write(0.0 << 'hello');
write(0.0 << 'hel' + 'lo');
write(0.0 << String(''));
write(0.0 << String('hello'));
write(0.0 << String('h' + 'ello'));
write(0.0 << new String(''));
write(0.0 << new String('hello'));
write(0.0 << new String('he' + 'llo'));
write(0.0 << new Object());
write(0.0 << new Object());
write(0.0 << [1, 2, 3]);
write(0.0 << [1 ,2 , 3]);
write(0.0 << new Array(3));
write(0.0 << Array(3));
write(0.0 << new Array(1 ,2 ,3));
write(0.0 << Array(1));
write(0.0 << foo);
write(-0.0 << undefined);
write(-0.0 << null);
write(-0.0 << true);
write(-0.0 << false);
write(-0.0 << Boolean(true));
write(-0.0 << Boolean(false));
write(-0.0 << new Boolean(true));
write(-0.0 << new Boolean(false));
write(-0.0 << NaN);
write(-0.0 << +0);
write(-0.0 << -0);
write(-0.0 << 0);
write(-0.0 << 0.0);
write(-0.0 << -0.0);
write(-0.0 << +0.0);
write(-0.0 << 1);
write(-0.0 << 10);
write(-0.0 << 10.0);
write(-0.0 << 10.1);
write(-0.0 << -1);
write(-0.0 << -10);
write(-0.0 << -10.0);
write(-0.0 << -10.1);
write(-0.0 << Number.MAX_VALUE);
write(-0.0 << Number.MIN_VALUE);
write(-0.0 << Number.NaN);
write(-0.0 << Number.POSITIVE_INFINITY);
write(-0.0 << Number.NEGATIVE_INFINITY);
write(-0.0 << new Number(NaN));
write(-0.0 << new Number(+0));
write(-0.0 << new Number(-0));
write(-0.0 << new Number(0));
write(-0.0 << new Number(0.0));
write(-0.0 << new Number(-0.0));
write(-0.0 << new Number(+0.0));
write(-0.0 << new Number(1));
write(-0.0 << new Number(10));
write(-0.0 << new Number(10.0));
write(-0.0 << new Number(10.1));
write(-0.0 << new Number(-1));
write(-0.0 << new Number(-10));
write(-0.0 << new Number(-10.0));
write(-0.0 << new Number(-10.1));
write(-0.0 << new Number(Number.MAX_VALUE));
write(-0.0 << new Number(Number.MIN_VALUE));
write(-0.0 << new Number(Number.NaN));
write(-0.0 << new Number(Number.POSITIVE_INFINITY));
write(-0.0 << new Number(Number.NEGATIVE_INFINITY));
write(-0.0 << '');
write(-0.0 << 0xa);
write(-0.0 << 04);
write(-0.0 << 'hello');
write(-0.0 << 'hel' + 'lo');
write(-0.0 << String(''));
write(-0.0 << String('hello'));
write(-0.0 << String('h' + 'ello'));
write(-0.0 << new String(''));
write(-0.0 << new String('hello'));
write(-0.0 << new String('he' + 'llo'));
write(-0.0 << new Object());
write(-0.0 << new Object());
write(-0.0 << [1, 2, 3]);
write(-0.0 << [1 ,2 , 3]);
write(-0.0 << new Array(3));
write(-0.0 << Array(3));
write(-0.0 << new Array(1 ,2 ,3));
write(-0.0 << Array(1));
write(-0.0 << foo);
write(+0.0 << undefined);
write(+0.0 << null);
write(+0.0 << true);
write(+0.0 << false);
write(+0.0 << Boolean(true));
write(+0.0 << Boolean(false));
write(+0.0 << new Boolean(true));
write(+0.0 << new Boolean(false));
write(+0.0 << NaN);
write(+0.0 << +0);
write(+0.0 << -0);
write(+0.0 << 0);
write(+0.0 << 0.0);
write(+0.0 << -0.0);
write(+0.0 << +0.0);
write(+0.0 << 1);
write(+0.0 << 10);
write(+0.0 << 10.0);
write(+0.0 << 10.1);
write(+0.0 << -1);
write(+0.0 << -10);
write(+0.0 << -10.0);
write(+0.0 << -10.1);
write(+0.0 << Number.MAX_VALUE);
write(+0.0 << Number.MIN_VALUE);
write(+0.0 << Number.NaN);
write(+0.0 << Number.POSITIVE_INFINITY);
write(+0.0 << Number.NEGATIVE_INFINITY);
write(+0.0 << new Number(NaN));
write(+0.0 << new Number(+0));
write(+0.0 << new Number(-0));
write(+0.0 << new Number(0));
write(+0.0 << new Number(0.0));
write(+0.0 << new Number(-0.0));
write(+0.0 << new Number(+0.0));
write(+0.0 << new Number(1));
write(+0.0 << new Number(10));
write(+0.0 << new Number(10.0));
write(+0.0 << new Number(10.1));
write(+0.0 << new Number(-1));
write(+0.0 << new Number(-10));
write(+0.0 << new Number(-10.0));
write(+0.0 << new Number(-10.1));
write(+0.0 << new Number(Number.MAX_VALUE));
write(+0.0 << new Number(Number.MIN_VALUE));
write(+0.0 << new Number(Number.NaN));
write(+0.0 << new Number(Number.POSITIVE_INFINITY));
write(+0.0 << new Number(Number.NEGATIVE_INFINITY));
